[EBS] gp2のBurstBalanceが確認可能となったのでボリュームサイズ別に検証してみた
はじめに
AWSチームのすずきです。
2016年11月10日のアップデートにより、 AWSのEC2用ブロックストレージ、EBS (Amazon Elastic Block Store) の CloudWatchメトリックとして、BurstBalance の利用が可能となりました。
New – Burst Balance Metric for EC2’s General Purpose SSD (gp2) Volumes
今回、1〜1000GiBまでのEBS(gp2)を用意し、最大IO発生時のバーストバランスと、性能変化を確認する機会がありましたので、 その内容を紹介させて頂きます。
環境情報
ec2
- インスタンスタイプ : c4.xlarge (測定対象EBS毎に異なるインスタンスを用意)
- OS : Amazon Linunx (amzn-ami-hvm-2016.09.0.20161028-x86_64-gp2 (ami-0c11b26d))
EBS
- 1GiB, 10GiB, 100GiB, 1TiB のEBSボリュームをgp2で作成
- 計測用のEC2インスタンスにそれぞれアタッチ
負荷発生
- 計測用のEC2インスタンスでddコマンドを実行
- EBS(gp2)の最大IOPS性能を出すため、ブロックサイズは小容量(512Byte)を指定
負荷発生コマンド
i=0 while : do echo $i date time dd if=/dev/zero of=/dev/xvdb bs=512 i=$(( $i + 1)) done
測定方法
dstat
- 計測環境でdstat コマンドを利用し、1分間のディスク転送とIO発生量を測定
dstat -c -d -r 60 1000
CloudWatch
- AWSマネジメントコンソールで関連メトリックを確認
結果
CloudWatch情報
EC2画面
- EC2→ボリュームを指定→モニタリング欄で、ボリュームバランス(パーセント)の確認が可能になりました
負荷発生中(クレジット消費中)
- 1〜100GiB のEBS は、30分 で、バーストクレジットが0%となりました
- 500 GiB のEBS は、約1時間でバーストクレジットが0%となりました。
- 1000GiBのEBSは、 バーストクレジットの変化はありませんでした。
無負荷(クレジット回復中)
- 500 GiB のEBSは 1時間でバーストクレジットが100%まで回復しました
- 100 GiB のEBSは、1時間で約20%の回復でした
- 1,10G GiBのEBSは、1時間で約6%の回復でした。
500GiB EBSの遷移
- dstatで測定された、io/total値が「VolumeReadOps」「VolumeWriteOps」に反映されており、バースト性能(3000IOPS)→ベースライン性能(1500IOPS)への半減を確認できました。
dstat実行結果
1GiB
バースト性能
- クレジットバランス枯渇前
----total-cpu-usage---- -dsk/total- --io/total- usr sys idl wai hiq siq| read writ| read writ 0 0 76 24 0 0| 11M 13M|2789 105 0 0 76 24 0 0| 11M 11M|2877 87.8 0 0 76 24 0 0| 11M 10M|2902 80.9
ベースライン性能
- クレジットバランス枯渇後
----total-cpu-usage---- -dsk/total- --io/total- usr sys idl wai hiq siq| read writ| read writ 0 0 75 25 0 0| 394k 395k|98.5 3.27 0 0 75 25 0 0| 394k 395k|98.4 3.17 0 0 75 25 0 0| 394k 395k|98.5 3.20
10GiB
バースト性能
----total-cpu-usage---- -dsk/total- --io/total- usr sys idl wai hiq siq| read writ| read writ 0 0 75 25 0 0| 11M 12M|2846 99.0 0 0 75 25 0 0| 11M 12M|2846 99.1 0 0 75 25 0 0| 11M 12M|2845 98.9
ベースライン性能
----total-cpu-usage---- -dsk/total- --io/total- usr sys idl wai hiq siq| read writ| read writ 0 0 75 25 0 0| 394k 395k|98.4 3.10 0 0 75 25 0 0| 394k 395k|98.5 3.27 0 0 75 25 0 0| 394k 395k|98.4 3.17
100GiB
バースト性能
----total-cpu-usage---- -dsk/total- --io/total- usr sys idl wai hiq siq| read writ| read writ 0 0 74 26 0 0| 11M 12M|2847 98.7 0 0 74 26 0 0| 11M 12M|2846 98.9 0 0 74 26 0 0| 11M 12M|2846 98.9
ベースライン性能
----total-cpu-usage---- -dsk/total- --io/total- usr sys idl wai hiq siq| read writ| read writ 0 0 75 25 0 0|1533k 1195k| 306 9.58 0 0 75 25 0 0|1181k 1194k| 295 9.43 0 0 75 25 0 0|1181k 1195k| 295 9.50
500GiB
バースト性能
----total-cpu-usage---- -dsk/total- --io/total- usr sys idl wai hiq siq| read writ| read writ 0 0 75 25 0 0| 11M 12M|2848 98.9 1 3 71 26 0 0| 12M 13M|3045 119 0 0 75 25 0 0| 11M 12M|2846 98.8
ベースライン性能
----total-cpu-usage---- -dsk/total- --io/total- usr sys idl wai hiq siq| read writ| read writ 0 0 76 24 0 0|5905k 6100k|1476 47.8 0 0 76 24 0 0|5887k 5578k|1472 43.6 0 0 76 24 0 0|5970k 3568k|1492 28.1
1000GiB
バースト性能
----total-cpu-usage---- -dsk/total- --io/total- usr sys idl wai hiq siq| read writ| read writ 0 0 74 26 0 0| 11M 12M|2846 98.7 0 0 74 26 0 0| 11M 12M|2846 98.8 0 0 76 24 0 0| 11M 12M|2846 98.6
ベースライン性能
- 省略(ベースライン性能とバースト性能が同一のため)
まとめ
EBS(gp2)のIO性能指針として重要なクレジットバランス、従来は直接確認する術がなく、 枯渇の事前検知にはスループット(読み取り、書き込み)の発生量から計算が必要、 クレジットバランスの枯渇を事前に知らせるCloudWatchのアラーム定義なども実装が困難でした。
今回のアップデートにより、CloudWatchでクレジットバランスの値が確認可能となった事で、 EBS(gp2)のボリュームサイズとIO性能の比率を簡単に確認する事が可能となりました。
クレジットバランスが枯渇しない範囲で、EBS(gp2)のボリュームサイズを適切に設定する事で、 予期せぬ性能低下の回避や、EBS費用の抑制が実現出来る可能性がありますので、 新しいCloudWatchメトリックご確認頂くことをお薦めします。
参考
バーストクレジットの警告アラームの設定
- アラームはマネジメントコンソールのEC2、CloudWatchの画面にて設定可能です
- EC2の画面では、以下よりアラームの作成が可能です。
- 通知先として、既存のSNSトピック、または新規SNSトピックの作成が可能です
- 「バーストバランス」を判定条件とし、任意の閾値を設定します。
EBS(gp2)のボリュームサイズ別の公称性能
ボリュームサイズ(GiB) | ベースラインパフォーマンス(IOPS) | 3,000 IOPS での最大のバースト期間(秒数) | 空のクレジットバランスを補充する秒数 |
---|---|---|---|
1 | 100 | 1862 | 54000 |
100 | 300 | 2000 | 18000 |
214 (最大スループットの最小サイズ) | 642 | 2290 | 8412 |
250 | 750 | 2400 | 7200 |
500 | 1500 | 3600 | 3600 |
750 | 2250 | 7200 | 2400 |
1000 | 3000 | 該当なし* | 該当なし* |
3,334 (最大 IOPS の最小サイズ) | 10000 | 該当なし* | 該当なし* |
16,384 (16 TiB、最大ボリュームサイズ) | 10000 | 該当なし* | 該当なし* |
- 公称性能は公式ドキュメントより引用
EBS(gp2,IO1)のボリュームサイズ別のEBS費用
ボリュームサイズ(GiB) | gp2性能(ベースライン/バースト)IOPS | gp2費用 | io1費用(ベースライン相当性能) | io1費用(バースト性能相当性能) |
---|---|---|---|---|
1 | 100 / 3000 | 0.12 $ | - | - |
100 | 300 / 3000 | 12 $ | 36.4 $ | 236.2 $ |
214 (最大スループットの最小サイズ) | 642 / 3000 | 25.44 $ | 77.9 $ | 252.39 $ |
250 | 750 / 3000 | 30 $ | 91 $ | 257.5 $ |
500 | 1500 / 3000 | 60 $ | 182 $ | 293 $ |
750 | 2250 / 3000 | 90 $ | 273 $ | 328.5 $ |
1000 | 3000 / 3000 | 120 $ | 364 $ | ← |
3,334 (最大 IOPS の最小サイズ) | 10,000 | 400.8 $ | 1334.78 $ | ← |
16,384 (16 TiB、最大ボリュームサイズ) | 10,000 | 2162.69 $ | 3373.19 $ | ← |
- EBS費用は、AWSカリュキュレータを用い、AWS東京リージョン価格の定価を算出
- SIMPLE MONTHLY CALCULATOR
- 2016/11月時点の価格です